package proyecto.gestionarDatosDeTemas;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import proyecto.BusinessLogic.TemaBLRemote;
import proyecto.EntityBeans.Tema;

import util.Common;
 
public class ObtenerTemaAction extends Action {
	
	protected ActionForm construirTemaForm(String id)
			throws Exception {
		
		TemaForm form = null;
		TemaBLRemote temaBLRemote = null;
		Tema tema = null;
		final Context context;
		Integer idTema = Integer.valueOf(id);
		System.out.println("idtema " + idTema);
		
		try {	
			context = new InitialContext();					
			temaBLRemote = (TemaBLRemote) context.lookup("TemaBL/remote");
		}
		catch (NamingException e)				{
			e.printStackTrace();
			throw new RuntimeException(e);				
		}
		
		System.out.println("antes de encontrar el tema");
		tema = temaBLRemote.findById(idTema);
		System.out.println("tema encontrado en ObtenerTemaAction " + tema.getIdTema());
		
		if ( tema != null ) {
			form = new TemaForm();
			form.setIdTema(tema.getIdTema());
			form.setNombre(tema.getNombre());
			form.setDescripcion(tema.getDescripcion());
			//form.setFechaAlta(tema.getFechaAlta());
		}
		else {
			throw new Exception("Tema " + idTema + " no encontrado!");
		}
		
		return form;
	}
	
	
	public ActionForward execute(
			ActionMapping mapping,
			ActionForm form,			
			HttpServletRequest request,
			HttpServletResponse response) {
								
			try {
				form = this.construirTemaForm(request.getParameter("idTema"));
								
				if ("request".equals(mapping.getScope())) {				
					request.setAttribute(mapping.getAttribute(), form);
				}				
				
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
											
			return mapping.findForward(Common.SUCCESS);				
		}
		
}
